// 这是一个全新的、语法正确的input.js文件

// 导入CSS文件
import '../css/input.css';

// 检查DOM是否加载完成的函数
function ready(callback) {
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', callback);
  } else {
    callback();
  }
}

// 模糊匹配函数
function fuzzyMatch(input, list) {
  if (!input || input.trim() === '') return [];
  const lowerInput = input.toLowerCase().trim();
  return list.filter(item =>
    item.toLowerCase().includes(lowerInput)
  ).slice(0, 10); // 最多显示10个匹配结果
}

// 创建下拉菜单函数
function createDropdown(inputElement, results, onSelect) {
  // 移除已存在的下拉菜单
  const existingDropdown = document.getElementById(`${inputElement.id}-dropdown`);
  if (existingDropdown) {
    existingDropdown.remove();
  }

  if (results.length === 0) return;

  // 创建下拉菜单元素
  const dropdown = document.createElement('div');
  dropdown.id = `${inputElement.id}-dropdown`;
  dropdown.className = 'autocomplete-dropdown';
  
  // 获取输入框的位置信息
  const rect = inputElement.getBoundingClientRect();
  const inputStyle = window.getComputedStyle(inputElement);
  
  // 设置下拉菜单样式
  dropdown.style.position = 'absolute';
  dropdown.style.top = '100%';
  dropdown.style.left = '0';
  dropdown.style.width = '100%';
  
  // 添加匹配结果
  results.forEach(result => {
    const item = document.createElement('div');
    item.className = 'autocomplete-item';
    item.textContent = result;

    // 点击选择
    item.addEventListener('click', function () {
      onSelect(result);
      dropdown.remove();
    });

    dropdown.appendChild(item);
  });

  // 将下拉菜单添加到输入框的父元素中，而不是body
  inputElement.parentElement.appendChild(dropdown);

  // 点击外部关闭下拉菜单
  function closeDropdown(event) {
    if (!dropdown.contains(event.target) && event.target !== inputElement) {
      dropdown.remove();
      document.removeEventListener('click', closeDropdown);
    }
  }
  setTimeout(() => {
    document.addEventListener('click', closeDropdown);
  }, 0);
}

// 为输入框添加模糊匹配功能
function addAutocomplete(inputId, dataList) {
  const inputElement = document.getElementById(inputId);
  if (!inputElement) return;

  // 确保输入框容器有相对定位
  const container = inputElement.parentElement;
  container.style.position = 'relative';

  // 监听输入事件
  inputElement.addEventListener('input', function () {
    const inputValue = this.value;
    const results = fuzzyMatch(inputValue, dataList);
    createDropdown(this, results, (selectedValue) => {
      this.value = selectedValue;
    });
  });

  // 监听焦点事件（重新显示下拉菜单）
  inputElement.addEventListener('focus', function () {
    if (this.value.trim()) {
      const results = fuzzyMatch(this.value, dataList);
      createDropdown(this, results, (selectedValue) => {
        this.value = selectedValue;
      });
    }
  });
}
const commonMajors = [
  '计算机科学与技术',
  '软件工程',
  '网络工程',
  '数据科学与大数据技术',
  '人工智能',
  '信息安全',
  '物联网工程',
  '电子信息工程',
  '通信工程',
  '电气工程及其自动化',
  '自动化',
  '机械工程',
  '土木工程',
  '建筑学',
  '环境科学与工程',
  '化学工程与工艺',
  '材料科学与工程',
  '生物医学工程',
  '临床医学',
  '口腔医学',
  '药学',
  '护理学',
  '金融学',
  '会计学',
  '工商管理',
  '市场营销',
  '人力资源管理',
  '法学',
  '汉语言文学',
  '英语',
  '数学与应用数学',
  '物理学',
  '化学',
  '生物科学',
  '心理学',
  '教育学',
  '历史学',
  '哲学',
  '新闻学',
  '广告学',
  '动画',
  '艺术设计学',
  '音乐学',
  '体育教育',
  '农业工程',
  '食品科学与工程',
  '动物医学',
  '植物保护',
  '水产养殖学'
];

// 常见学院列表
const commonColleges = [
  '人工智能与计算机学院',
  '电气与控制工程学院',
  '通信与信息工程学院',
  '地质与环境学院',
  '测绘科学与技术学院',
  '机械工程学院',
  '建筑与土木工程学院',
  '理学院',
  '环境科学与工程学院',
  '化学与化工学院',
  '材料科学与工程学院',
  '管理学院',
  '马克思主义学院',
  '人文与外国语学院',
  '艺术学院',
  '体育部',
  '继续教育学院',
  '高新学院',
  '安全科学与工程学院',
  '能源与矿业学院',
];

// 常见院校列表
const commonSchools = [
  '清华大学',
  '北京大学',
  '浙江大学',
  '复旦大学',
  '上海交通大学',
  '中国科学技术大学',
  '南京大学',
  '武汉大学',
  '华中科技大学',
  '北京航空航天大学',
  '北京师范大学',
  '同济大学',
  '西安交通大学',
  '哈尔滨工业大学',
  '中山大学',
  '东南大学',
  '北京理工大学',
  '中国人民大学',
  '南开大学',
  '天津大学',
  '华南理工大学',
  '吉林大学',
  '厦门大学',
  '大连理工大学',
  '四川大学',
  '电子科技大学',
  '山东大学',
  '重庆大学',
  '兰州大学',
  '西北工业大学',
  '中南大学',
  '湖南大学',
  '东北大学',
  '华东师范大学',
  '中国农业大学',
  '国防科技大学',
  '西北农林科技大学',
  '中央民族大学',
  '北京交通大学',
  '北京工业大学',
  '北京科技大学',
  '北京化工大学',
  '北京邮电大学',
  '北京林业大学',
  '北京中医药大学',
  '北京外国语大学',
  '中国传媒大学',
  '中央财经大学',
  '对外经济贸易大学',
  '外交学院',
  '中国政法大学',
  '华北电力大学',
  '中国矿业大学',
  '中国石油大学',
  '中国地质大学',
  '上海外国语大学',
  '上海财经大学',
  '华东理工大学',
  '东华大学',
  '上海大学',
  '第二军医大学',
  '南京航空航天大学',
  '南京理工大学',
  '中国药科大学',
  '河海大学',
  '南京师范大学',
  '江南大学',
  '苏州大学',
  '南京农业大学',
  '华中农业大学',
  '华中师范大学',
  '中南财经政法大学',
  '武汉理工大学',
  '西安电子科技大学',
  '长安大学',
  '西北大学',
  '西安建筑科技大学',
  '兰州交通大学',
  '兰州理工大学',
  '云南大学',
  '贵州大学',
  '广西大学',
  '新疆大学',
  '内蒙古大学',
  '海南大学',
  '西藏大学',
  '郑州大学',
  '合肥工业大学',
  '南昌大学',
  '暨南大学',
  '深圳大学',
  '南方科技大学',
  '宁波大学',
  '首都师范大学',
  '首都医科大学',
  '首都经济贸易大学'
];


// 页面加载完成后执行所有操作
document.addEventListener('DOMContentLoaded', function () {
  // -------------------------- 工具函数：统一提示（用户可见） --------------------------
  // 成功提示（绿色文字，可自定义样式）
  function showSuccess(message) {
    alert(message); // 优先用alert确保用户必见，也可替换为页面内DOM提示
    console.log('【成功】', message);
  }

  // 错误提示（红色文字，用户可见）
  function showError(message) {
    alert('错误：' + message); // 用户可见的错误反馈
    console.error('【错误】', message);
  }

  // -------------------------- 核心：检查用户信息（优化非必需字段校验） --------------------------
  // function checkUserInfo() {
  //   try {
  //     // 1. 读取localStorage关键字段（只检查必需字段：成绩+3个院校字段）
  //     const savedScores = localStorage.getItem('userScores');
  //     const userMajor = localStorage.getItem('userMajor');
  //     const Usercollege = localStorage.getItem('Usercollege');
  //     const userTargetSchool = localStorage.getItem('userTargetSchool');


  //     // 若localStorage中存在完整必需数据，直接返回true（允许非必需成绩字段缺失）
  //     if (savedScores && userMajor && Usercollege && userTargetSchool) {
  //       const savedData = JSON.parse(savedScores);
  //       // 只校验必需的成绩字段（gpa、cet4），其他成绩字段（math1等）缺失不影响
  //       if (savedData.gpa !== undefined && savedData.cet4 !== undefined) {
  //         console.log('【checkUserInfo】localStorage数据完整，允许跳转');
  //         return true;
  //       }
  //     }

  //     // 2. 检查表单：只校验必需字段，非必需字段（math1等）不存在不报错
  //     const scoreForm = document.getElementById('scoreForm');
  //     if (!scoreForm) {
  //       showError('未找到成绩表单，请检查页面结构');
  //       return false;
  //     }

  //     // 必需输入框：成绩（gpa、cet4）+ 院校信息（3个）
  //     const gpaInput = scoreForm.querySelector('input[name="gpa"]');
  //     const cet4Input = scoreForm.querySelector('input[name="cet4"]');
  //     const majorInput = document.getElementById('majorInput');
  //     const collegeInput = document.getElementById('collegeInput');
  //     const targetSchoolInput = document.getElementById('targetSchoolInput');

  //     // 检查必需元素是否存在（缺一不可）
  //     const requiredElements = [
  //       { el: gpaInput, name: 'GPA输入框' },
  //       { el: cet4Input, name: '四级成绩输入框' },
  //       { el: majorInput, name: '专业输入框' },
  //       { el: collegeInput, name: '学院输入框' },
  //       { el: targetSchoolInput, name: '目标院校输入框' }
  //     ];
  //     for (const item of requiredElements) {
  //       if (!item.el) {
  //         showError(`页面缺少必需元素：${item.name}`);
  //         return false;
  //       }
  //     }

  //     // 检查必需字段是否有值（缺一不可）
  //     const requiredValues = [
  //       { val: gpaInput.value.trim(), name: '平均学分绩点（GPA）' },
  //       { val: cet4Input.value.trim(), name: '英语四级成绩' },
  //       { val: majorInput.value.trim(), name: '专业' },
  //       { val: collegeInput.value.trim(), name: '学院' },
  //       { val: targetSchoolInput.value.trim(), name: '目标院校' }
  //     ];
  //     for (const item of requiredValues) {
  //       if (!item.val) {
  //         showError(`请填写${item.name}`);
  //         return false;
  //       }
  //     }

  //     // 3. 整合数据（非必需成绩字段缺失时默认0，不影响保存）
  //     const inputData = {
  //       gpa: parseFloat(gpaInput.value) || 0,
  //       cet4: parseFloat(cet4Input.value) || 0,
  //       // 非必需字段：存在则取值，不存在则默认0
  //       math1: scoreForm.querySelector('input[name="math1"]') ? parseFloat(scoreForm.querySelector('input[name="math1"]').value) || 0 : 0,
  //       math2: scoreForm.querySelector('input[name="math2"]') ? parseFloat(scoreForm.querySelector('input[name="math2"]').value) || 0 : 0,
  //       english1: scoreForm.querySelector('input[name="english1"]') ? parseFloat(scoreForm.querySelector('input[name="english1"]').value) || 0 : 0,
  //       english2: scoreForm.querySelector('input[name="english2"]') ? parseFloat(scoreForm.querySelector('input[name="english2"]').value) || 0 : 0,
  //       english3: scoreForm.querySelector('input[name="english3"]') ? parseFloat(scoreForm.querySelector('input[name="english3"]').value) || 0 : 0,
  //       english4: scoreForm.querySelector('input[name="english4"]') ? parseFloat(scoreForm.querySelector('input[name="english4"]').value) || 0 : 0,
  //       // 院校字段（与predict.js对齐）
  //       college: collegeInput.value.trim(),
  //       Major: majorInput.value.trim(),
  //       TargetSchool: targetSchoolInput.value.trim()
  //     };

  //     // 4. 保存到localStorage（捕获保存错误，给用户提示）
  //     try {
  //       localStorage.setItem('userScores', JSON.stringify(inputData));
  //       localStorage.setItem('userMajor', majorInput.value.trim());
  //       localStorage.setItem('Usercollege', collegeInput.value.trim());
  //       localStorage.setItem('userTargetSchool', targetSchoolInput.value.trim());
  //     } catch (storageError) {
  //       showError(`保存数据失败：${storageError.message}（可能是浏览器隐私模式限制）`);
  //       return false;
  //     }

  //     showSuccess('个人信息保存成功！'); // 保存成功提示（用户可见）
  //     return true;
  //   } catch (error) {
  //     showError(`检查/保存信息时出错：${error.message}`);
  //     return false;
  //   }
  // }

  // -------------------------- 加载已保存信息（确保回显正常） --------------------------
  function loadSavedInfo() {
    try {
      const scoresStr = localStorage.getItem('userScores');
      if (!scoresStr) return;

      const scores = JSON.parse(scoresStr);
      const scoreForm = document.getElementById('scoreForm');
      if (!scoreForm) return;

      // 1. 回显成绩（非必需字段缺失时不报错）
      const gpaInput = scoreForm.querySelector('input[name="gpa"]');
      if (gpaInput) gpaInput.value = scores.gpa || '';
      
      const cet4Input = scoreForm.querySelector('input[name="cet4"]');
      if (cet4Input) cet4Input.value = scores.cet4 || '';
      
      const math1Input = scoreForm.querySelector('input[name="math1"]');
      if (math1Input) math1Input.value = scores.math1 || '';
      
      const math2Input = scoreForm.querySelector('input[name="math2"]');
      if (math2Input) math2Input.value = scores.math2 || '';
      
      const english1Input = scoreForm.querySelector('input[name="english1"]');
      if (english1Input) english1Input.value = scores.english1 || '';
      
      const english2Input = scoreForm.querySelector('input[name="english2"]');
      if (english2Input) english2Input.value = scores.english2 || '';
      
      const english3Input = scoreForm.querySelector('input[name="english3"]');
      if (english3Input) english3Input.value = scores.english3 || '';
      
      const english4Input = scoreForm.querySelector('input[name="english4"]');
      if (english4Input) english4Input.value = scores.english4 || '';

      // 2. 回显院校信息
      const majorInput = document.getElementById('majorInput');
      const collegeInput = document.getElementById('collegeInput');
      const targetSchoolInput = document.getElementById('targetSchoolInput');
      
      if (majorInput) majorInput.value = localStorage.getItem('userMajor') || '';
      if (collegeInput) collegeInput.value = localStorage.getItem('Usercollege') || '';
      if (targetSchoolInput) targetSchoolInput.value = localStorage.getItem('userTargetSchool') || '';

      console.log('【loadSavedInfo】已加载保存的信息');
    } catch (error) {
      showError(`加载已保存信息时出错：${error.message}`);
    }
  }

  // -------------------------- 初始化加载信息 --------------------------
  loadSavedInfo();

  // -------------------------- 添加模糊匹配功能 --------------------------
  // 为专业输入框添加模糊匹配
  addAutocomplete('majorInput', commonMajors);
  // 为学院输入框添加模糊匹配
  addAutocomplete('collegeInput', commonColleges);
  // 为目标院校输入框添加模糊匹配
  addAutocomplete('targetSchoolInput', commonSchools);

  // -------------------------- 保存按钮事件（核心：触发checkUserInfo完成保存） --------------------------
const saveAllInfoBtn = document.getElementById('saveAllInfoBtn');
  if (saveAllInfoBtn) {
    saveAllInfoBtn.addEventListener('click', function () {
      console.log('【saveAllInfoBtn】点击保存按钮，开始收集和保存数据');

      // 1. 获取所有必要的DOM元素
      const scoreForm = document.getElementById('scoreForm');
      const majorInput = document.getElementById('majorInput');
      const collegeInput = document.getElementById('collegeInput');
      const targetSchoolInput = document.getElementById('targetSchoolInput');

      // 检查核心元素是否存在
      if (!scoreForm || !majorInput || !collegeInput || !targetSchoolInput) {
        showError('页面缺少必要的输入元素，请检查HTML结构');
        return;
      }

      // 获取成绩输入框
      const gpaInput = scoreForm.querySelector('input[name="gpa"]');
      const cet4Input = scoreForm.querySelector('input[name="cet4"]');
      const math1Input = scoreForm.querySelector('input[name="math1"]');
      const math2Input = scoreForm.querySelector('input[name="math2"]');
      const english1Input = scoreForm.querySelector('input[name="english1"]');
      const english2Input = scoreForm.querySelector('input[name="english2"]');
      const english3Input = scoreForm.querySelector('input[name="english3"]');
      const english4Input = scoreForm.querySelector('input[name="english4"]');

      if (!gpaInput || !cet4Input) {
        showError('缺少GPA或四级成绩输入框');
        return;
      }

      // 2. 验证输入值
      if (!gpaInput.value.trim()) { showError('请填写平均学分绩点'); return; }
      if (!cet4Input.value.trim()) { showError('请填写英语四级成绩'); return; }
      if (!majorInput.value.trim()) { showError('请填写专业'); return; }
      if (!collegeInput.value.trim()) { showError('请填写学院'); return; }
      if (!targetSchoolInput.value.trim()) { showError('请填写目标院校'); return; }

      // 3. 整合所有数据
      const inputData = {
        gpa: parseFloat(gpaInput.value) || 0,
        cet4: parseFloat(cet4Input.value) || 0,
        math1: math1Input ? parseFloat(math1Input.value) || 0 : 0,
        math2: math2Input ? parseFloat(math2Input.value) || 0 : 0,
        english1: english1Input ? parseFloat(english1Input.value) || 0 : 0,
        english2: english2Input ? parseFloat(english2Input.value) || 0 : 0,
        english3: english3Input ? parseFloat(english3Input.value) || 0 : 0,
        english4: english4Input ? parseFloat(english4Input.value) || 0 : 0,
        college: collegeInput.value.trim(),
        Major: majorInput.value.trim(),
        TargetSchool: targetSchoolInput.value.trim()
      };

      // 4. 保存到localStorage
      try {
        localStorage.setItem('userScores', JSON.stringify(inputData));
        localStorage.setItem('userMajor', majorInput.value.trim());
        localStorage.setItem('userCollege', collegeInput.value.trim());
        localStorage.setItem('userTargetSchool', targetSchoolInput.value.trim());
        
        console.log('【saveAllInfoBtn】数据保存成功:', inputData);
        showSuccess('个人信息保存成功！');
      } catch (error) {
        showError(`保存数据失败：${error.message}`);
      }
    });
  } else {
    showError('未找到“保存信息”按钮，请检查按钮ID是否为saveAllInfoBtn');
  }

  // -------------------------- 跳转按钮事件（核心：直接实现校验和跳转逻辑） --------------------------
  // 预测页面跳转
  const assessmentBtn = document.getElementById('assessmentBtn');
  if (assessmentBtn) {
    assessmentBtn.addEventListener('click', function () {
      // 直接检查localStorage中是否存在保存的数据
      const savedScores = localStorage.getItem('userScores');
      const userMajor = localStorage.getItem('userMajor');
      const userCollege = localStorage.getItem('userCollege');
      const userTargetSchool = localStorage.getItem('userTargetSchool');

      if (savedScores && userMajor && userCollege && userTargetSchool) {
        // 数据存在，可以跳转
        showSuccess('即将跳转到预测结果页面');
        window.location.href = 'predict.html';
      } else {
        // 数据不存在，提示用户先保存
        showError('请先填写并保存个人信息，然后再进行预测。');
      }
    });
  }

  // 功能1页面跳转
  const matchingBtn = document.getElementById('matchingBtn');
  if (matchingBtn) {
    matchingBtn.addEventListener('click', function () {
      const savedScores = localStorage.getItem('userScores');
      const userMajor = localStorage.getItem('userMajor');
      if (savedScores && userMajor) {
        showSuccess('即将跳转到功能1页面');
        window.location.href = 'func1.html';
      } else {
        showError('请先填写并保存个人信息。');
      }
    });
  }

  // 功能2页面跳转
  const insightBtn = document.getElementById('insightBtn');
  if (insightBtn) {
    insightBtn.addEventListener('click', function () {
      const savedScores = localStorage.getItem('userScores');
      const userMajor = localStorage.getItem('userMajor');
      if (savedScores && userMajor) {
        showSuccess('即将跳转到功能2页面');
        window.location.href = 'func2.html';
      } else {
        showError('请先填写并保存个人信息。');
      }
    });
  }
});